package com.vehiclesecure.model;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;

import java.time.LocalDateTime;
import java.util.List;

/**
 * 维修记录模型类，用于存储车辆的维修和异常情况
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
@Document(collection = "maintenance_records")
public class MaintenanceRecord {
    public static final String Status = null;
    @Id
    private String id;
    private String vehicleId;           // 车辆唯一标识符
    private String vehiclePlate;        // 车牌号
    private String maintenanceType;     // 维修类型（REGULAR_MAINTENANCE, REPAIR, EMERGENCY_REPAIR, ABNORMAL_HANDLING）
    private String description;         // 维修描述或异常描述
    private String reportedBy;          // 报告者ID
    private String reportedByName;    // 报告者姓名
    private String serviceProviderId;   // 服务商ID（分配给的服务商）
    private String serviceProviderName; // 服务商名称
    private MaintenanceStatus status;   // 维修状态
    private String priority;            // 优先级（LOW, MEDIUM, HIGH, URGENT）
    private List<String> images;        // 相关图片URL列表
    private String location;            // 发生位置描述
    private double latitude;            // 纬度
    private double longitude;           // 经度
    private LocalDateTime reportedAt;   // 报告时间
    private LocalDateTime assignedAt;   // 分配时间
    private LocalDateTime completedAt;  // 完成时间
    private String estimatedCost;       // 预估费用
    private String actualCost;          // 实际费用
    private String notes;               // 备注信息
    private List<String> tags;          // 标签列表

    public enum MaintenanceStatus {
        PENDING,      // 待处理
        ASSIGNED,     // 已分配
        IN_PROGRESS,  // 处理中
        COMPLETED,    // 已完成
        CANCELLED     // 已取消
    }
}